package BitOperation;

/**
 * @ClassName Test
 * @Description TODO
 * @Author ZJX
 * @Date 2024/9/23 19:09
 * @Version 1.0
 */
public class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = ~a + 1;
        System.out.println(b);

        System.out.println(a >> 1);
        System.out.println(a << 1);

        swap(a,b);
    }

    public static void printBinary(int num) {
        for (int i = 31; i >= 0; i--) {
            // 判断第i位是否为1
            System.out.print((num & (1 << i)) != 0 ? "1" : "0");
        }
        System.out.println();
    }

    /*
     * @param a:
    	 * @param b:
      * @return void
     * @author: ZJX
     * @description: 位运算 交换两个数的值
     * @date: 2024/9/23 20:30
     */
    public static void swap(int a, int b){
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        System.out.println(a);
        System.out.println(b);
    }

    /*
     * @param a:
    	 * @param b:
      * @return int
     * @author: ZJX
     * @description: 位运算 获得两个数的最大值
     * @date: 2024/9/23 20:33
     */
    public static int getMax(int a, int b) {
        int c = a - b;
        int sign = (c >>> 31);  // 提取符号位，0 表示 a >= b，1 表示 a < b
        return sign == 0 ? a : b;  // 如果 sign 为 0 返回 a，否则返回 b
    }

}
